Heretofore, programmable logic controllers (PLCs) have had a tendency to be somewhat specialized or adapted to particular classes or categories of equipment. However, there is an increasing tendency and usage of programmable logic controllers for smaller and smaller pieces of equipment. Moreover, there is also a tendency to use programmable logic controllers which are adaptable to a variety of processes, systems and equipment. As a result, programmable logic controller manufacturers have been and are required to produce smaller and less expensive controllers while providing increased adaptability and features. Further, competition has also forced manufacturers to produce a range of programmable logic controllers from small units, commonly referred to as Brick type PLCs, to high-end complex units. However, regardless of the size or complexity, manufacturers are being required to produce PLC's at lower costs while still delivering additional features.
Accordingly, it is becoming increasingly important to provide PLCs which provide modular approaches. That is, the ability to enlarge a system by providing additional features and/or additional analog input/output (I/O) and/or digital I/O. Modular systems allow for adaption to simple and complex situations as well as increasing in cost in more manageable incremental steps. Further, due to the increased use of programmable logic controllers, it is now a de-facto requirement that such controllers be capable of being interconnected in a network type environment and being programmed and reprogrammed through a variety of means.
Programmable logic controllers typically encompass a primary controller having a plurality of I/O terminals for digital and/or analog interaction. Frequently however, particular applications require I/O terminals which is different than that provided or alternatively in greater numbers than that typically provided. As a result, expandable programmable logic controllers have heretofore included a system of optional add-on modules. These modules have required a means for the primary controller to select individual expansion modules for access. Previous methods for achieving this selection have included the use of fixed back planes with individual select lines used to activate each module location. Therefore, the primary controller activates a specific select line to access a specific module. Alternatively, a fixed back plane has been used with distinguishing address codes provided at each module location. The primary controller therefore provides an address across an address bus that is matched by the receiving module against its pre-programmed location address.
A third approach has been the use of address switches or jumpers with each module modified at installation in order to provide a unique address. Further approaches have taken the form of a fixed sequence access where each module blocks access to succeeding modules in a chain until some state change sequence is completed. Once access to that particular module is completed, it passes through transactions to succeeding modules until some master signal indicates start of a new access sequence.
A fifth approach has been the use of position dependent data with data telegrams passed from module to module with each module extracting or adding data elements to the telegram at a location in the telegram corresponding to the modules position in the chain. However, the above approaches are increasingly difficult and cumbersome to utilize, particularly in brick style PLCs which have limited memory, limited processing capabilities and are of a small size in which to accommodate such functions.
Further, one of the primary and perhaps most important features of a PLC is its ability to operate a specified sequence or program in as fast a time period as is required. While it is recognized that the actual process itself is frequently not a high-speed "process" the various parameters which are measured require calculations which must be done in a high speed fashion so that the entire process is not disturbed. These high speed calculations typically utilize interrupt routines. Heretofore however, such interrupt routines have required a user to utilize a specific preset program section to which the PLC is to transfer control for the events of interest. Therefore, while a user could specify when an interrupt would occur, the user was limited as to a specific interrupt routine which could be carried out. This therefore limits the use of such processors or requires significantly long interrupts in that everything which might be of interest must be put into the same interrupt routine so that all contingencies are taken into account.
Moreover, there is an increasing need to utilize what is commonly referred to as high speed counters or functions. These counters or functions are utilized to distinguish time, frequency of events and the like in order to initiate subsequent events. Heretofore, once a preset number of events occurred it was required that the high speed counter be stopped and/or that the high speed counter current value be perturbed, i.e., cleared to zero in order to reprogram the next preset value. This therefore resulted in a time delay or interruption during this reset or reprogram period. This is particularly problematic when a series of high speed counts are required in that subsequent resets of the counter induce a cumulative error or off-set in the total elapsed period of time.
Further problems with existing programmable logic controllers deal with their communication ports. Programmable logic controllers generally provide a communication port for control of the operating system software. This communication port is required to allow programming of the PLC. However, these interfaces which communicate with the PLC either use the manufacturers proprietary communication protocol or a manufacturers library set or specified protocols. Further, while the communications function is an integral part of a PLC and is being used with increasing frequency, end users frequently cannot gain access to the port in a general purpose way from the user program. At best, some PLCs provide the user with the capability to send messages to a device such as a printer but do not allow messages to be received. Accordingly, it is difficult, expensive and sometimes virtually impossible for different PLC's to be utilized so as to accommodate a new or different protocol than that which was originally designed or specified. At best, these additional protocols are not programmable via the normal interface or communication port.
Additional problems with existing PLCs deals with removable program memory. Removable program memory is a necessary function which is used to adapt a PLC to new equipment, different process, different parameters and the like. Heretofore, such removable program memory devices have used parallel access devices such as erasable programmable read-only memory (EPROM), battery backed random access memory (RAM), or flash EPROM. These removable memory cartridges often must be inserted in a separate device such as a handheld programmer. This therefore dictates that downloading of new programs to individual PLCs is quite cumbersome and requires external devices. Moreover, it typically makes it very difficult for a specific PLC program to be propagated amongst other PLCs in the system or similar PLCs throughout a factory.